package a_strategy.b_oo;

/**
 * Created by wug on 2016/6/12 0012.
 */
public class MainTest {
    public static void main(String[] args) {
        Hero tryndamere = new Tryndamere();
        tryndamere.printName();
        tryndamere.weapon();
        System.out.println("----------------");
        Hero yi = new Yi();
        yi.printName();
        yi.weapon();

        /**
         * 我们居然用了继承，好吧！
         * 那么问题来了 安妮来了她没有武器！！！
         * 怎么办？
         */
        System.out.println("----------------");
        Hero anni = new Anni();
        anni.printName();
        /**
         * 于是我们像蛮王和易一样重写了安妮的武器方法 并输出她没有武器
         */
        anni.weapon();
        /**
         * 问题来了
         * 1.武器无非就是 刀 剑 枪 法杖 弓 等等或者没有武器
         * 英雄的数量自然是比武器多得多的
         * 我们总不能每个英雄的武器都重写一次吧？？？
         *
         * 2.需求变了 蛮王要用剑 安妮要拿枪 易要用弓了
         * 我们不得不找到他们 然后重新修改他们各自的weapon方法？？？
         *
         *
         * 3.况且需求远远没有结束 英雄还需要加上移动这个方法
         * 蛮王扛着大刀走的慢
         * 易挂着剑走得快
         * 安妮是走的，但人家走的是跑跳步
         * 我们又要重写所有英雄的移动？？？？
         *
         *
         *
         * 我的天。。。。。想想都不会好了
         *
         * 武器是变化的 移动也是变化的
         *
         * 设计模式原则 1 封装变化
         *
         * 所以我们需要封装这些变化
         */
    }
}
